package main

import (
	"fmt"
)

type Base struct {
	name string
}

func (b *Base) BaseMagic() {
	fmt.Println(b.name)
}

func (b *Base) MoreMagic() {
	b.BaseMagic()
	b.BaseMagic()
}

type Voodoo struct {
	Base
}

func (v *Voodoo) Magic() {
	v.name = "voodoo magic"
	fmt.Println(v.name)
}

func main() {
	v := new(Voodoo)
	v.Magic()
	v.MoreMagic()
}
